As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems often use an array of physical storage resources, such as a Redundant Array of Independent Disks (RAID), for example, for storing information. Arrays of physical storage resources typically utilize multiple disks to perform input and output operations and can be structured to provide redundancy which may increase fault tolerance. Other advantages of arrays of physical storage resources may be increased data integrity, throughput and/or capacity. In operation, one or more physical storage resources disposed in an array of physical storage resources may appear to an operating system as a single logical storage unit or “logical unit.” Implementations of physical storage resource arrays can range from a few physical storage resources disposed in a server chassis, to hundreds of physical storage resources disposed in one or more separate storage enclosures.
For many years, physical storage resources were typically implemented using magnetic storage media. However, in recent years, the industry has shifted to using solid-state storage devices in place of magnetic storage media. Solid-state storage devices may be desirable over magnetic storage media due to reduced latency, higher performance, fewer mechanical components, and other reasons.
While many characteristics of solid-state storage devices make them desirable for use in RAIDs, other characteristics of traditional solid-state storage devices potentially render them unsuitable for use in RAIDs or other applications. One characteristic is the inability of traditional solid-state storage devices to retain historical data for use by RAID systems or other applications. RAID systems may utilize such data in order to generate parity protection. But generation of parity data using traditional solid-state storage devices may lead to increased latency in generating parity due to the inability to effectively retain historical data.
Traditional solid-state storage devices are typically based on NAND flash technology which, when written to must erase old data in a storage location before new data can be written. Accordingly, solid-state storage devices abstract a logical block address as seen by a user or operating system from a physical block address used at the flash level. This allows the solid-state storage device to accept the new data which is stored at a physically different location and to tag the old data as invalid, and such invalid data may be later erased when it is efficient to perform such erasure. In traditional solid-state storage devices, two algorithms are implemented that handle these operations in the background, transparent to the user. The first is commonly referred to as “garbage collection” and handles indentifying those blocks in flash containing the highest concentration of stale data and tagging such blocks as “erase candidates.” The second is commonly referred to as “data reclamation” and facilitates moving all of the valid data from these erase candidates into new locations on flash. Once the valid data is relocated, the erase candidates can then be erased to be used for future write operations. From the time that data is tagged as stale to the time that it is erased, such “historical data” is actually retained in flash, but not available to the user.